#ifndef __SOC_TIMER_H__
#define __SOC_TIMER_H__

#include "soc_common_def.h"

void SOC_TimerInit(SOC_TimerNo_t no, uint32_t us);
void SOC_TimerSetTimeOut(SOC_TimerNo_t no, uint32_t us);
void SOC_TimerReload(SOC_TimerNo_t no);
void SOC_TimerStart(SOC_TimerNo_t no);
void SOC_TimerStop(SOC_TimerNo_t no);

uint16_t SOC_TimerGetCounter(SOC_TimerNo_t no);

/// @brief 计数模式
/// @param no 
void SOC_TimerInitCountMode(SOC_TimerNo_t no);

//内部调用 [因为C51出重入原因，这里使用宏定义]
extern uint8_t m_timerH[];
extern uint8_t m_timerL[];

#define SOC_RaiseTimeOutEventFromISR(no) do{\
        if(no < 2)\
        {\
            TH##no = m_timerH[no];\
            TL##no = m_timerL[no]; \
        }\
        SOC_Timer##no##_TimeOutCallBack();\
    }while(0)

#endif